import axios from 'axios';

/**
 * 创建axios实例
 */
const request = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
request.interceptors.request.use(
  config => {
    let data = {
      nns_tag: 'pc',
      version: '0.0.1'
    }
    if(config.data.token) {
      config.headers.token = config.data.token
      delete config.data.token
    }
    config.data = Object.assign(data,config.data)
    // 可以在这里添加token等认证信息
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    return Promise.reject(error);
  }
);

/**
 * 上传图片的方法
 * @param url - 上传图片的接口地址
 * @param file - 要上传的图片文件
 * @param params - 其他可选参数
 * @returns Promise<any>
 */
export const uploadImage = async (url: string, file: File, params?: Record<string, any>) => {
  const data: { [key: string]: any } = {
    file,
  }
  // 添加其他参数
  if (params) {
    Object.keys(params).forEach(key => {
      data[key] = params[key]
    });
  }

  try {
    const response = await request.post(url, data, {
      headers: {
        'Content-Type': 'multipart/form-data' // 设置请求头为 multipart/form-data
      }
    });
    return response;
  } catch (error) {
    console.error('图片上传失败:', error);
    throw error;
  }
};

export default request;